package com.qvtu.poetry.entry.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.time.LocalDateTime;

@Data
public class PoemSearchDTO {
    /**
     * 关键字模糊匹配，作用范围：标题/内容/主题关键词/风格。
     * 例如："春"、"花"。
     */
    private String keyword;

    /**
     * 作品风格，例如："古诗"、"唐诗"、"宋词"、"现代" 等。
     * 传入 "全部" 或不传表示不按风格过滤。
     */
    private String styleType;

    /**
     * 主题关键词，按关键字模糊匹配（如数据库中存有以逗号分隔的多个主题词）。
     * 例如："思念"、"山水"。
     */
    private String themeKeyword;

    /**
     * 创建时间下限，ISO 格式：yyyy-MM-dd'T'HH:mm:ss。
     * 示例：2025-01-01T00:00:00
     */
    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss")
    private LocalDateTime startTime;

    /**
     * 创建时间上限，ISO 格式：yyyy-MM-dd'T'HH:mm:ss。
     * 示例：2025-12-31T23:59:59
     */
    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss")
    private LocalDateTime endTime;

    /**
     * 最小点赞数阈值（依赖点赞表统计），默认 0 表示不限。
     */
    private Integer minLikes;

    /**
     * 页码，从 1 开始，默认 1。
     */
    private Integer pageNum;

    /**
     * 每页数量，默认 9（前端下拉常用：6/9/12）。
     */
    private Integer pageSize;

    /**
     * 排序方式：支持
     * - 默认/default（按 updateTime 降序）
     * - 最新发布/latest（按 createTime 降序）
     * - 点赞最多/likes（统计点赞数降序）
     * - 热度/hot（按 viewCount 降序）
     * - 分享/share（按 shareCount 降序）
     */
    private String order;
}